<?php

/**
 * Andromeda
 *
 * Plataforma de desenvolvimento de aplica��es  
 *
 * @package		Andromeda
 * @author		Roberto C�mara
 * @copyright	----
 * @Cr�ditos    CodeIgniter FrameWork && PHPpit Framework Tutorial
 * 				A metodologia e principios desta plataforma baseiam-se no
 *				conte�do intelectual open source introduzido pelas 
 *				identidades mencionadas.
 */

// ------------------------------------------------------------------------

/**
 * Classe Basedados
 *
 * Driver BD para mysql
 *
 * @package		Andromeda
 * @subpackage	classes
 * @category	DataBase
 * @author		Roberto C�mara
 */

Class Basedados
{
    private $registry;
	private $host;
	private $nomedb;
	private $username;
	private $password;
	private $db_link;
	
    function __construct($registry, $my_host, $my_nomedb, $my_username, $my_password) {
        $this->registry = $registry;
		
		$this->host = $my_host;
		$this->nomedb = $my_nomedb;
		$this->username = $my_username;
		$this->password = $my_password;
		
		$this->db_link = mysql_connect($my_host, $my_username, $my_password) or die(mysql_error());
		mysql_query('SET NAMES utf8');
		mysql_select_db($my_nomedb) or die(mysql_error());
		
    }
    
    function mysql_push_array($tabela, $data)
    {
    	$sql = "LOCK TABLES $tabela WRITE";
		$res = mysql_query($sql);
		if(!$res)
		{
			if(Debug)
				echo  mysql_error() . " @ function mysql_push_array na class BaseDados, Não foi possivél Bloquear a tabela $tabela <br />";
			echo 'Por motivos técnicos não foi possível processar o seu pedido, por favor informe o administrador se o erro persistir';
			return 0;
		}
		
		//decode array to sql query string
		$sql_fields = implode(", " ,array_keys($data));
		$sql_values = implode("', '" ,$data);
		$sql = "INSERT INTO $tabela ($sql_fields) VALUES ('$sql_values')";
		$result = mysql_query($sql);
		if(!$result)
		{
			if(Debug)
				echo  mysql_error() . " @ function mysql_push_array() na class BaseDados, Não foi possivel inserir a estrutura de informacao <br />";
			echo 'Por motivos técnicos não foi possível processar o seu pedido, por favor informe o administrador se o erro persistir';
			die();
			exit;
			return 0;
		}
		
		$result = mysql_query("SELECT MAX(ID) AS LAST_ID FROM $tabela ");
		$ultimo_id = mysql_fetch_array($result);
		$ultimo_id = $ultimo_id['LAST_ID'];
		if(!$ultimo_id)
		{
			if(Debug)
				echo  mysql_error() . " @ function mysql_push_array() na class BaseDados, Não foi possivel retornar o ultimo id inserido <br />";
			echo 'Por motivos técnicos não foi possível processar o seu pedido, por favor informe o administrador se o erro persistir';
			die();
			exit;
			return 0;
		}
		
		$sql = "UNLOCK TABLES";
		$res = mysql_query($sql);
		if(!$res)
		{
			if(Debug)
				echo  mysql_error() . " @ function mysql_push_array() na class BaseDados, Não foi possivel libertar as tabelas <br />";
			echo 'Por motivos técnicos não foi possível processar o seu pedido, por favor informe o administrador se o erro persistir';
			die();
			exit;
			return 0;
		}
		
		return $ultimo_id;
    }
    
    function mysql_delete_entry($tabela, $argumento)
    {
    	
		$sql = "DELETE FROM $tabela where $argumento";
		$result = mysql_query($sql);
		if(!$result)
		{
			if(Debug)
				echo  mysql_error() . " @ function mysql_delete_entry() na class BaseDados, Não foi possivel eliminar da tabela '$tabela' com os argumentos '$argumento'<br />";
			echo 'Por motivos técnicos não foi possível processar o seu pedido, por favor informe o administrador se o erro persistir';
			die();
			exit;
			return 0;
		}
    }
	
	public function kill_db()
	{
		mysql_close($this->db_link);
	}
	
	/* Fun��es Padr�o */
}

?>